In datacenters as well as many other computing applications, it is important to ensure consistency and efficiency in executing multithreaded applications that have concurrent execution threads. The execution time and performance of a multithreaded application may vary due at least in part to differences between computing platforms used to execute the multithreaded application. For example, differences between operating systems and underlying computing devices may result in different execution times and often unpredictable outcomes in terms of whether the multithreaded application is successfully executed. In addition, because applications can have varying data inputs, difference between the data inputs propagate along the execution paths of the applications and contribute to the observed performance inconsistencies.
It is often challenging to select appropriate thread execution schedules for ensuring efficiency and consistency in executing a multithreaded application. Further, it is also challenging to construct and maintain a database of thread execution schedules that are usable for executing different applications having different data inputs.